Descriptive Analysis & Preliminary Results
Introduction
The following document summarises the progress made thus far on Chapter 1: Local Fiscal Risks of Decarbonisation of my DPhil. The work aims to pursue a better understanding of how industrial transformation impacts local well-being. From an original interest in looking at all aspects of local public finance, the project has narrowed to focus on expenditure on public education and its connection to industrial prosperity and transformation.
Below, I provide some descriptive statistics and figures about the data, some preliminary regression tests of the significance of various GDP control variables, and some regression results using a standard TWFE model (with and without state-level trends) and coal mining activity as instruments for property taxes and GDP.
The main research question is: How does industrial transformation/activity impact county-level expenditure on public education?
Conclusion: I do not yet feel confident in any of the results below but hopefully these steps can help orient the next phase of analysis (ideally moving on to consider oil and gas industry treatment variables as well or treatments that proxy “industrial transformation” in a more general sense).
Data
All data used is reported annually at the county-level. Therefore, no time-invariant variables are included (apart from the State in which a county is in, which is made time-variant through the inclusion of a state-level trend in various models).
Expenditure and Revenue: The dependent variables of interest come from Willamette University’s Government Finance Database. The data includes county-level revenue and expenditure on public education including disaggregated values by revenue source (federal, state, or other intergovernmental revenue) and expenditure item (lunches, wages, debt). All values are reported in current US dollars. The data for property taxes collected used in regressions below also come from this dataset. Expenditure on vocational training and from Educational Service Agencies (ESAs) are also sourced from this dataset. The challenge of accounting for ESAs are shown in KR2 section below.
GDP Controls: US Bureau of Economic Analysis. Values are also reported in current US dollars (real GDP values exist). The controls used in the below are total, private industry, and oil, gas, mining & quarrying county-level GDP.
Population controls: US Census Bureau.
Coal mine activity and production levels: Mine Safety and Health Administration
Descriptive Statistics
The below summary table displays descriptive statistics for all indicators used in regression results below.
All values for total enrollment, revenue, taxes, expenditure are in thousand USD. Values for GDP are reported in million USD. Values for population are reported in thousands.
| Statistic | N | Mean | St. Dev. | Min | Max |
| esa_tot_exp | 7,805 | 20 | 36 | 0 | 463 |
| esa_tot_exp_pp | 7,805 | 2 | 2 | 0 | 37 |
| Enrollment | 60,280 | 15 | 50 | 0 | 1,724 |
| Total_Revenue | 60,280 | 165 | 602 | 0 | 25,052 |
| Total_Taxes | 60,280 | 64 | 251 | 0 | 7,909 |
| Property_Tax | 60,280 | 61 | 247 | 0 | 7,909 |
| Total_IG_Revenue | 60,280 | 93 | 363 | 0 | 18,363 |
| Total_Fed_IG_Revenue | 60,280 | 1 | 4 | 0 | 137 |
| Total_Expenditure | 60,280 | 169 | 616 | 0 | 23,008 |
| Total_Interest_on_Debt | 60,280 | 5 | 24 | 0 | 1,006 |
| Total_Revenue_pp | 60,280 | 12 | 6 | 2 | 191 |
| Total_Taxes_pp | 60,280 | 4 | 5 | 0 | 165 |
| Property_Tax_pp | 60,280 | 4 | 5 | 0 | 165 |
| Total_IG_Revenue_pp | 60,280 | 7 | 3 | 0 | 116 |
| Total_Fed_IG_Revenue_pp | 60,280 | 0 | 1 | 0 | 13 |
| Total_Expenditure_pp | 60,280 | 12 | 6 | 2 | 186 |
| Total_Interest_on_Debt_pp | 60,280 | 0 | 0 | 0 | 10 |
| pop_total | 60,280 | 97 | 324 | 0 | 10,106 |
| pop_school_age | 60,280 | 20 | 66 | 0 | 2,219 |
| gdp_total | 57,540 | 4,847 | 20,834 | 4 | 836,163 |
| gdp_priv_ind | 57,540 | 4,259 | 18,804 | 3 | 752,486 |
| gdp_govt | 57,540 | 587 | 2,187 | 1 | 83,677 |
| gdp_o_g_mining_quarr_21 | 57,540 | 94 | 569 | 0 | 27,694 |
Descriptive Figures: County-level education expenditure
The following plot displays each county’s time series of expenditure (total and per pupil log values) as well as the overall mean. Colors correspond to the US state the county is in.
Key Relationships (KR)
Below are scatterplots and diagrams depicting key relationships between dependent and control variables as well as shares/components of key variables.
KR 1: Revenue Sources
Most important to tease out before modelling is how different revenue sources (federal, state, county (own), and other local sources) interplay. County-level revenue for public education is a combination of both local and intergovernmental sources. The local portion of the share is almost entirely sourced through property taxes. The intergovernmental sources come from state, federal, and local aid.
Below chart plots county-level mean (taken over the panel time horizon) of different intergovernmental (IG) sources versus own-source revenue (generated from local sources). The solid black line represents a best-fit line and the dashed line represents a 45 degree line. The blue plot shows Total IG Revenue (Federal + State + Other Local) versus own revenue. There is a near negative correlation between the two (ie. they are near-substitutes for one another). This effect is dominated by State IG revenue (as can be seen in the purple panel).
The following plots show the share of revenue for public education that comes from own sources, local intergovernmental, state intergovernmental, and federal intergovernmental by state. Almost all states have a near 50% split of revenue from state and own sources, which aligns with data from the Congressional Research Service cited in the Transfer of Status report. Massachusetts has an unusually high share of local IG support (inter-school aid), eclipsing own sources almost completely. From further research, I believe this has to do with a unique structure of Massachusetts public school funding which is reliant on several multi-county funding agencies (similar to the mentioned ESAs). This anomaly might warrant the exclusion of MA from the analysis.
Conclusion: I am still unsure how best to control for the effects of these shares on our results.
The below plot provides the same information as above but on a national level.
Conclusion: Corroborates the near-even split of revenue between state and own sources which seems to be a fact of public education revenue. I mainly include this as an alternative summarising figure to the above.
KR 2: ESAs and County Expenditure
Around 2007, many states instituted Educational Service Agencies (ESAs) which sought to “equalise” public education across the country. To date, ~45 states have ESAs which are responsible for multiple school districts, most often across multiple counties. Therefore, when modelling county-level expenditure it will be important to understand how this change in educational expenditure affected county-level spending (ie. did ESAs replace or supplement county-level funding).
Only 593 counties of 2740 in the dataset have recorded revenue/expenditure from ESAs. After some digging, I believe that these values for ESAs are improperly recorded in the sense that the revenue is recorded only in counties in which the ESA’s headquarters is located and not partitioned to the counties to which the revenue ultimately flows. All county-level total expenditure/revenue values that are used in the regressions on this page have explicitly excluded recorded ESA values for this reason (they are instead recorded in a variable called esa_tot_exp or esa_tot_rev in total and per pupil values).
The below graphs show some relationships between ESA and county-level finances. I have yet to arrive at a definitive understanding of how ESAs and county-level finances interact. They do not appear to be substitutes. As is evident, the data on ESA expenditure is patchy and highly volatile by county. At the moment, I believe this is because of imperfect/inconsistent reporting in comparison to traditional school district reporting. The four states that have recorded ESA expenditure before 2007 are California, Illinois, Minnesota, Oregon.
With this we want to demonstrate how ESAs interact with our expenditure indicator. Does high ESA spending imply low/high local spending? It seems from the below that the two have a no correlation, implying little substitution? (Each point is a county in a particular year starting from 2007, colour represents state). Warm color-scale is (top-left panel) is expenditure values whereas the cool color scales are revenue values. The black line is a 45 degree line.
KR 3: Revenue, Expenditure and Property Taxes
We know the majority of “own source” revenue comes from property taxes. The below scatterplots demonstrate the relationship between education revenue and expeniture versus property taxes collected. The solid black line represents a best-fit line and the dashed line represents a 45 degree line (intercept-adjusted to match data).
KR 4: GDP and Property Taxes
The solid black line represents a best-fit line and the dashed line represents a 45 degree line (intercept-adjusted to match data).
GDP and Property taxes have a positive linear correlation, to be expected.
KR 5: GDP and Education Expenditure
The solid black line represents a best-fit line and the dashed line represents a 45 degree line (intercept-adjusted to match data).
GDP and Education expenditure have a positive linear correlation, as expected.
Preliminary Results
Panel testing
is.pbalanced(df, index = c("fips", "year"))[1] TRUE
County-level trends
TBA: Summary of county-level trends to be added. Ideally graphics showing their spatial autocorrelation.
Descriptive regression models
The below models were run to test the relevance of various GDP control variables (total, private industry, oil, gas & mining) as well as corroborate some relationships in the above scatter plots of KRs. Ideally, once variables have been surveyed, they will be put through model selection via getspanel.
All regression models that follow include TWFE (county- and year- fixed effects) and standard errors clustered by county.
All functional forms in the feols() functions below are of the form “Y ~ X” In the cases in which multiple estimations are included via sw(Xa, Xb, Xc + Xd), the function will return results for “Y~Xa”, “Y~Xb”, “Y ~ Xc + Xd”.
To ease reading, I have ensured that no results table contains more than 4 models (to limit need to scroll horizontally).
Property Tax ~ GDP
GDP has a highly relevant relationship to property taxes. A 1% increase in GDP and GDP per capita leads to a 0.3% increase in property taxes collected.
list(feols(log_Property_Tax ~ log_gdp_total | fips + year, data = mines_df, se = "cluster", cluster = "fips"),
feols(log_Property_Tax_pp ~ log_gdp_total_pc | fips + year, data = mines_df, se = "cluster", cluster = "fips")) %>% etable(se.below = TRUE) %>% kable| model 1 | model 2 | |
|---|---|---|
| Dependent Var.: | (log) Property Taxes | (log) Property Taxes pp |
| (log) GDP | 0.3430*** | |
| (0.0311) | ||
| (log) GDP pc | 0.3020*** | |
| (0.0267) | ||
| Fixed-Effects: | -------------------- | ----------------------- |
| fips | Yes | Yes |
| year | Yes | Yes |
| _______________ | ____________________ | _______________________ |
| S.E.: Clustered | by: fips | by: fips |
| Observations | 57,540 | 57,540 |
| R2 | 0.95236 | 0.90885 |
| Within R2 | 0.02007 | 0.03622 |
Education Expenditure ~ Revenue Sources
The below regressions are included to establish the relationship between education expenditure and its component parts. These regressions simply corroborate what is displayed in the section on Key Relationships above (ie. that the largest form of IG revenue is state funding and “Own Source” revenue is largely sourced from Property Taxes).
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_Property_Tax,
log_Property_Tax + log_Total_IG_Revenue,
log_Property_Tax + log_Total_Fed_IG_Revenue + log_State_IGR_Education,
log_Total_Rev_Own_Sources + log_Total_IG_Revenue) | fips + year, data = mines_df, se = "cluster", cluster = "fips") %>% etable(se.below = TRUE) %>% kable| ..1 | ..2 | ..3 | ..4 | ..5 | ..6 | ..7 | ..8 | |
|---|---|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) Property Taxes | 0.0446*** | 0.0495*** | 0.0478*** | 0.0434*** | 0.0481*** | 0.0466*** | ||
| (0.0071) | (0.0075) | (0.0076) | (0.0070) | (0.0073) | (0.0074) | |||
| (log) IG Revenue | 0.1309*** | 0.1360*** | 0.1241*** | 0.1290*** | ||||
| (0.0157) | (0.0148) | (0.0155) | (0.0147) | |||||
| (log) Federal IG Rev. | 0.0013 | 0.0005 | ||||||
| (0.0009) | (0.0009) | |||||||
| (log) State IG Rev | 0.1113*** | 0.1070*** | ||||||
| (0.0155) | (0.0154) | |||||||
| (log) Rev. Own Sources | 0.2018*** | 0.1960*** | ||||||
| (0.0129) | (0.0128) | |||||||
| Fixed-Effects: | --------------------------- | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ______________________ | ___________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 57,540 | 57,540 | 57,540 | 57,538 | 57,540 | 57,540 | 57,540 | 57,538 |
| R2 | 0.81882 | 0.82343 | 0.82249 | 0.83453 | 0.82117 | 0.82530 | 0.82453 | 0.83577 |
| Within R2 | 0.01597 | 0.04099 | 0.03587 | 0.10128 | 0.01535 | 0.03811 | 0.03385 | 0.09571 |
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_Total_Rev_Own_Sources_pp + log_Total_IG_Revenue_pp,
log_Property_Tax_pp,
log_Property_Tax_pp + log_Total_IG_Revenue_pp,
log_Property_Tax_pp + log_Total_Fed_IG_Revenue_pp + log_State_IGR_Education_pp) | fips + year, data = mines_df, se = "cluster", cluster = "fips") %>% etable(se.below = TRUE) %>% kable| ..1 | ..2 | ..3 | ..4 | ..5 | ..6 | ..7 | ..8 | |
|---|---|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) Rev. Own Sources pp | 0.3368*** | 0.3305*** | ||||||
| (0.0145) | (0.0145) | |||||||
| (log) IG Revenue pp | 0.3945*** | 0.3931*** | 0.3851*** | 0.3837*** | ||||
| (0.0148) | (0.0175) | (0.0149) | (0.0176) | |||||
| (log) Property Taxes pp | 0.1931*** | 0.2218*** | 0.2224*** | 0.1898*** | 0.2178*** | 0.2187*** | ||
| (0.0215) | (0.0229) | (0.0225) | (0.0212) | (0.0226) | (0.0222) | |||
| (log) Federal IG Rev. pp | 0.0015** | 0.0009 | ||||||
| (0.0005) | (0.0005) | |||||||
| (log) State IG Rev pp | 0.3612*** | 0.3547*** | ||||||
| (0.0183) | (0.0183) | |||||||
| Fixed-Effects: | --------------------------- | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| _________________________ | ___________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 57,538 | 57,540 | 57,540 | 57,540 | 57,538 | 57,540 | 57,540 | 57,540 |
| R2 | 0.88803 | 0.83717 | 0.87228 | 0.86920 | 0.88744 | 0.83893 | 0.87234 | 0.86974 |
| Within R2 | 0.39185 | 0.11564 | 0.30634 | 0.28959 | 0.38023 | 0.11313 | 0.29710 | 0.28278 |
Education Expenditure ~ GDP
A 1% increase in GDP is associated with a 0.14% increase in education expenditure, dominated by the effect of GDP from private industry (0.12%). I include here also the GDP generated from the oil, gas, mining, and quarrying sector. The effect is statistically significant but small.
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_gdp_total,
log_gdp_priv_ind,
log_gdp_o_g_mining_quarr_21) | fips + year, data = mines_df, se = "cluster", cluster = "fips") %>% etable(se.below = TRUE) %>% kable| ..1 | ..2 | ..3 | ..4 | ..5 | ..6 | |
|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) GDP | 0.1535*** | 0.1529*** | ||||
| (0.0140) | (0.0140) | |||||
| (log) GDP Priv. Industry | 0.1322*** | 0.1316*** | ||||
| (0.0124) | (0.0124) | |||||
| (log) GDP O&G&Mining | 0.0052*** | 0.0051*** | ||||
| (0.0007) | (0.0007) | |||||
| Fixed-Effects: | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes |
| ________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 57,540 | 57,540 | 57,540 | 57,540 | 57,540 | 57,540 |
| R2 | 0.82183 | 0.82135 | 0.81641 | 0.82428 | 0.82379 | 0.81888 |
| Within R2 | 0.03233 | 0.02968 | 0.00287 | 0.03246 | 0.02979 | 0.00275 |
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_gdp_total_pc,
log_gdp_priv_ind_pc,
log_gdp_o_g_mining_quarr_21_pc) | fips + year, data = mines_df, se = "cluster", cluster = "fips") %>% etable(se.below = TRUE) %>% kable| ..1 | ..2 | ..3 | ..4 | ..5 | ..6 | |
|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) GDP pc | 0.2054*** | 0.2043*** | ||||
| (0.0138) | (0.0138) | |||||
| (log) GDP Priv. Industry pc | 0.1743*** | 0.1733*** | ||||
| (0.0125) | (0.0125) | |||||
| (log) O&G&Mining pc | 0.0700*** | 0.0702*** | ||||
| (0.0076) | (0.0076) | |||||
| Fixed-Effects: | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes |
| ___________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 57,540 | 57,540 | 57,540 | 57,540 | 57,540 | 57,540 |
| R2 | 0.82545 | 0.82442 | 0.81977 | 0.82784 | 0.82681 | 0.82229 |
| Within R2 | 0.05195 | 0.04635 | 0.02110 | 0.05206 | 0.04643 | 0.02150 |
Incorporating state-level trends
The below take the Education Expenditure ~ GDP models and incorporate state-level time trends.
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_gdp_total,
log_gdp_priv_ind,
log_gdp_o_g_mining_quarr_21) + time:as.factor(state) | fips + year, data = mines_df, se = "cluster", cluster = "fips") %>% etable(., drop = "time*", se.below = TRUE) %>% kable| ..1 | ..2 | ..3 | ..4 | ..5 | ..6 | |
|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) GDP | 0.1347*** | 0.1345*** | ||||
| (0.0154) | (0.0154) | |||||
| (log) GDP Priv. Industry | 0.1159*** | 0.1158*** | ||||
| (0.0136) | (0.0136) | |||||
| (log) GDP O&G&Mining | 0.0044*** | 0.0042*** | ||||
| (0.0007) | (0.0007) | |||||
| Fixed-Effects: | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes |
| ________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 57,540 | 57,540 | 57,540 | 57,540 | 57,540 | 57,540 |
| R2 | 0.83452 | 0.83418 | 0.83064 | 0.83674 | 0.83640 | 0.83284 |
| Within R2 | 0.10123 | 0.09940 | 0.08014 | 0.10106 | 0.09920 | 0.07964 |
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_gdp_total_pc,
log_gdp_priv_ind_pc,
log_gdp_o_g_mining_quarr_21_pc) + time:as.factor(state) | fips + year, data = mines_df, se = "cluster", cluster = "fips") %>% etable(., drop = "time*", se.below = TRUE) %>% kable| ..1 | ..2 | ..3 | ..4 | ..5 | ..6 | |
|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) GDP pc | 0.1770*** | 0.1764*** | ||||
| (0.0157) | (0.0157) | |||||
| (log) GDP Priv. Industry pc | 0.1498*** | 0.1494*** | ||||
| (0.0140) | (0.0140) | |||||
| (log) O&G&Mining pc | 0.0667*** | 0.0670*** | ||||
| (0.0080) | (0.0080) | |||||
| Fixed-Effects: | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes |
| ___________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 57,540 | 57,540 | 57,540 | 57,540 | 57,540 | 57,540 |
| R2 | 0.83680 | 0.83611 | 0.83367 | 0.83899 | 0.83830 | 0.83592 |
| Within R2 | 0.11364 | 0.10988 | 0.09661 | 0.11347 | 0.10968 | 0.09660 |
Incorporating time lags
Education expenditure has a highly relevant time dependence. The effect of increases in GDP two years prior has the greatest effect on current education expenditure, implying a delayed effect of county-level economic prosperity/decline on public education expenditure.
Question: Is the above interpretation of the time dependence accurate?
levs_gdp_real_trend <- feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_gdp_total + log_gdp_total_l1 + log_gdp_total_l2, log_gdp_priv_ind + log_gdp_priv_ind_l1 + log_gdp_priv_ind_l2) + time:as.factor(state) | fips + year, data = mines_df, se = "cluster", cluster = "fips")
levs_gdp_real_trend %>% etable(., drop = "time*", se.below = TRUE) %>% kable| ..1 | ..2 | ..3 | ..4 | |
|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) GDP | 0.0045 | 0.0038 | ||
| (0.0109) | (0.0109) | |||
| (log,l1) GDP | 0.0573*** | 0.0576*** | ||
| (0.0077) | (0.0077) | |||
| (log,l2) GDP | 0.1266*** | 0.1269*** | ||
| (0.0176) | (0.0175) | |||
| (log) GDP Priv. Industry | 0.0042 | 0.0035 | ||
| (0.0093) | (0.0093) | |||
| (log,l1) GDP Priv. Industry | 0.0503*** | 0.0506*** | ||
| (0.0066) | (0.0066) | |||
| (log,l2) GDP Priv. Industry | 0.1098*** | 0.1101*** | ||
| (0.0151) | (0.0151) | |||
| Fixed-Effects: | --------------------------- | --------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes |
| ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips |
| Observations | 52,060 | 52,060 | 52,060 | 52,060 |
| R2 | 0.82842 | 0.82798 | 0.83072 | 0.83028 |
| Within R2 | 0.10739 | 0.10511 | 0.10755 | 0.10521 |
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_gdp_total_pc + log_gdp_total_pc_l1 + log_gdp_total_pc_l2,
log_gdp_priv_ind_pc + log_gdp_priv_ind_pc_l1 + log_gdp_priv_ind_pc_l2,
log_gdp_o_g_mining_quarr_21 + log_gdp_o_g_mining_quarr_21_l1 + log_gdp_o_g_mining_quarr_21_l2) + time:as.factor(state) | fips + year, data = mines_df, se = "cluster", cluster = "fips") %>% etable(., drop = "time*", se.below = TRUE) %>% kable| ..1 | ..2 | ..3 | ..4 | ..5 | ..6 | |
|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) GDP pc | 0.0156 | 0.0145 | ||||
| (0.0112) | (0.0112) | |||||
| (log,l1) GDP pc | 0.0720*** | 0.0722*** | ||||
| (0.0107) | (0.0107) | |||||
| (log,l2) GDP pc | 0.1582*** | 0.1585*** | ||||
| (0.0169) | (0.0169) | |||||
| (log) GDP Priv. Industry pc | 0.0123 | 0.0114 | ||||
| (0.0097) | (0.0097) | |||||
| (log,l1) GDP Priv. Industry pc | 0.0624*** | 0.0625*** | ||||
| (0.0090) | (0.0090) | |||||
| (log,l2) GDP Priv. Industry pc | 0.1357*** | 0.1360*** | ||||
| (0.0148) | (0.0148) | |||||
| (log) GDP O&G&Mining | 0.0021*** | 0.0020*** | ||||
| (0.0006) | (0.0006) | |||||
| (log,l1) GDP O&G&Mining | 0.0018** | 0.0017** | ||||
| (0.0007) | (0.0006) | |||||
| (log,l2) GDP O&G&Mining | 0.0040*** | 0.0038*** | ||||
| (0.0008) | (0.0008) | |||||
| Fixed-Effects: | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes |
| ______________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 |
| R2 | 0.83209 | 0.83112 | 0.82167 | 0.83435 | 0.83338 | 0.82390 |
| Within R2 | 0.12648 | 0.12141 | 0.07225 | 0.12668 | 0.12155 | 0.07157 |
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_gdp_total_pc + log_gdp_total_pc_l1 + log_gdp_total_pc_l2,
log_gdp_priv_ind_pc + log_gdp_priv_ind_pc_l1 + log_gdp_priv_ind_pc_l2,
log_gdp_o_g_mining_quarr_21_pc + log_gdp_o_g_mining_quarr_21_pc_l1 + log_gdp_o_g_mining_quarr_21_pc_l2) + time:as.factor(state) | fips + year, data = mines_df, se = "cluster", cluster = "fips") %>% etable(., drop = "time*", se.below = TRUE) %>% kable| ..1 | ..2 | ..3 | ..4 | ..5 | ..6 | |
|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) GDP pc | 0.0156 | 0.0145 | ||||
| (0.0112) | (0.0112) | |||||
| (log,l1) GDP pc | 0.0720*** | 0.0722*** | ||||
| (0.0107) | (0.0107) | |||||
| (log,l2) GDP pc | 0.1582*** | 0.1585*** | ||||
| (0.0169) | (0.0169) | |||||
| (log) GDP Priv. Industry pc | 0.0123 | 0.0114 | ||||
| (0.0097) | (0.0097) | |||||
| (log,l1) GDP Priv. Industry pc | 0.0624*** | 0.0625*** | ||||
| (0.0090) | (0.0090) | |||||
| (log,l2) GDP Priv. Industry pc | 0.1357*** | 0.1360*** | ||||
| (0.0148) | (0.0148) | |||||
| (log) O&G&Mining pc | 0.0084 | 0.0085 | ||||
| (0.0072) | (0.0072) | |||||
| (log,l1) O&G&Mining pc | 0.0049 | 0.0048 | ||||
| (0.0079) | (0.0079) | |||||
| (log,l2) O&G&Mining pc | 0.0803*** | 0.0803*** | ||||
| (0.0105) | (0.0105) | |||||
| Fixed-Effects: | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes |
| ______________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 |
| R2 | 0.83209 | 0.83112 | 0.82672 | 0.83435 | 0.83338 | 0.82901 |
| Within R2 | 0.12648 | 0.12141 | 0.09853 | 0.12668 | 0.12155 | 0.09851 |
Coal Mine & Production Data
Coal mine data exists from 1996-2021. The below is a preliminary treatment attempt using data on active coal production (total_active_prod) and active coal mines (total_active_n).
Question: might it be more interesting to look at the first difference of mining and production activity to understand the effect of a change in activity?
Standard TWFE panel regression
list(feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ log_gdp_priv_ind_pc + log_gdp_priv_ind_pc_l1 + log_gdp_priv_ind_pc_l2 + diff_total_active_n + l1_diff_total_active_n + l2_diff_total_active_n | fips + year, data = mines_df, se = "cluster", cluster = "fips"),
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_gdp_priv_ind_pc + log_gdp_priv_ind_pc_l1 + log_gdp_priv_ind_pc_l2 + diff_total_active_prod + l1_diff_total_active_prod + l2_diff_total_active_prod,
log_gdp_total_pc + log_gdp_total_pc_l1 + log_gdp_total_pc_l2 + diff_total_active_n + l1_diff_total_active_n + l2_diff_total_active_n,
log_gdp_total_pc + log_gdp_total_pc_l1 + log_gdp_total_pc_l2 + diff_total_active_prod + l1_diff_total_active_prod + l2_diff_total_active_prod) | fips + year, data = mines_df, se = "cluster", cluster = "fips")) %>% etable(se.below = TRUE) %>% kable| .1 | .2 | .1 | .2 | .3 | .4 | .5 | .6 | |
|---|---|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) GDP Priv. Industry pc | 0.0151 | 0.0142 | 0.0151 | 0.0142 | ||||
| (0.0099) | (0.0098) | (0.0098) | (0.0098) | |||||
| (log,l1) GDP Priv. Industry pc | 0.0656*** | 0.0657*** | 0.0656*** | 0.0657*** | ||||
| (0.0089) | (0.0089) | (0.0089) | (0.0089) | |||||
| (log,l2) GDP Priv. Industry pc | 0.1523*** | 0.1518*** | 0.1523*** | 0.1518*** | ||||
| (0.0136) | (0.0136) | (0.0136) | (0.0136) | |||||
| (fd) Active Coal Mines | -0.0001 | -5.64e-5 | -0.0001 | -7.67e-5 | ||||
| (0.0011) | (0.0011) | (0.0011) | (0.0011) | |||||
| (l1, fd) Active Coal Mines | -0.0004 | -0.0004 | -0.0005 | -0.0004 | ||||
| (0.0010) | (0.0010) | (0.0010) | (0.0010) | |||||
| (l2, fd) Active Coal Mines | -0.0018* | -0.0017* | -0.0018* | -0.0018* | ||||
| (0.0009) | (0.0009) | (0.0009) | (0.0009) | |||||
| (fd) Active Coal Prod | -0.0003 | -0.0003 | -0.0002 | -0.0002 | ||||
| (0.0009) | (0.0009) | (0.0009) | (0.0009) | |||||
| (l1,fd) Active Coal Prod | -0.0005 | -0.0005 | -0.0005 | -0.0005 | ||||
| (0.0007) | (0.0007) | (0.0007) | (0.0007) | |||||
| (l2,fd) Active Coal Prod | -0.0019*** | -0.0019*** | -0.0018*** | -0.0018*** | ||||
| (0.0004) | (0.0004) | (0.0004) | (0.0004) | |||||
| (log) GDP pc | 0.0199 | 0.0198 | 0.0188 | 0.0188 | ||||
| (0.0115) | (0.0115) | (0.0115) | (0.0115) | |||||
| (log,l1) GDP pc | 0.0753*** | 0.0752*** | 0.0755*** | 0.0755*** | ||||
| (0.0106) | (0.0106) | (0.0106) | (0.0106) | |||||
| (log,l2) GDP pc | 0.1766*** | 0.1766*** | 0.1760*** | 0.1760*** | ||||
| (0.0154) | (0.0154) | (0.0154) | (0.0154) | |||||
| Fixed-Effects: | --------------------------- | -------------------------- | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ______________________________ | ___________________________ | __________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 |
| R2 | 0.82150 | 0.82390 | 0.82151 | 0.82283 | 0.82284 | 0.82391 | 0.82522 | 0.82522 |
| Within R2 | 0.07141 | 0.07157 | 0.07144 | 0.07831 | 0.07834 | 0.07160 | 0.07852 | 0.07855 |
list(feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ log_gdp_priv_ind_pc + log_gdp_priv_ind_pc_l1 + log_gdp_priv_ind_pc_l2 + l(total_active_n, 0:2) | fips + year, data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year),
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_gdp_priv_ind_pc + log_gdp_priv_ind_pc_l1 + log_gdp_priv_ind_pc_l2 + l(total_active_prod, 0:2),
log_gdp_total_pc + log_gdp_total_pc_l1 + log_gdp_total_pc_l2 + l(total_active_n, 0:2),
log_gdp_total_pc + log_gdp_total_pc_l1 + log_gdp_total_pc_l2 + l(total_active_prod, 0:2)) | fips + year, data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year)) %>% etable(se.below = TRUE) %>% kable| .1 | .2 | .1 | .2 | .3 | .4 | .5 | .6 | |
|---|---|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) GDP Priv. Industry pc | 0.0154 | 0.0145 | 0.0151 | 0.0142 | ||||
| (0.0099) | (0.0098) | (0.0098) | (0.0098) | |||||
| (log,l1) GDP Priv. Industry pc | 0.0656*** | 0.0658*** | 0.0655*** | 0.0657*** | ||||
| (0.0089) | (0.0089) | (0.0089) | (0.0089) | |||||
| (log,l2) GDP Priv. Industry pc | 0.1526*** | 0.1521*** | 0.1525*** | 0.1519*** | ||||
| (0.0136) | (0.0136) | (0.0136) | (0.0136) | |||||
| Active Coal Mines | -0.0005 | -0.0004 | -0.0005 | -0.0005 | ||||
| (0.0011) | (0.0011) | (0.0011) | (0.0011) | |||||
| (l1) Active Coal Mines | -0.0004 | -0.0004 | -0.0004 | -0.0004 | ||||
| (0.0009) | (0.0009) | (0.0009) | (0.0009) | |||||
| (l2) Active Coal Mines | -0.0009 | -0.0009 | -0.0009 | -0.0009 | ||||
| (0.0010) | (0.0010) | (0.0010) | (0.0010) | |||||
| Active Coal Prod | -1.37e-7 | -1.16e-7 | -1.08e-7 | -8.66e-8 | ||||
| (8.36e-7) | (8.33e-7) | (8.53e-7) | (8.5e-7) | |||||
| (l1) Active Coal Prod | -2.89e-7 | -3.05e-7 | -2.9e-7 | -3.06e-7 | ||||
| (3.43e-7) | (3.41e-7) | (3.48e-7) | (3.46e-7) | |||||
| (l2) Active Coal Prod | 2.27e-8 | -9.01e-8 | 4.32e-8 | -6.95e-8 | ||||
| (1.44e-6) | (1.46e-6) | (1.43e-6) | (1.45e-6) | |||||
| (log) GDP pc | 0.0203 | 0.0199 | 0.0192 | 0.0188 | ||||
| (0.0115) | (0.0115) | (0.0115) | (0.0115) | |||||
| (log,l1) GDP pc | 0.0753*** | 0.0752*** | 0.0756*** | 0.0755*** | ||||
| (0.0106) | (0.0106) | (0.0106) | (0.0106) | |||||
| (log,l2) GDP pc | 0.1769*** | 0.1768*** | 0.1763*** | 0.1762*** | ||||
| (0.0154) | (0.0154) | (0.0154) | (0.0154) | |||||
| Fixed-Effects: | --------------------------- | -------------------------- | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ______________________________ | ___________________________ | __________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 |
| R2 | 0.82152 | 0.82391 | 0.82150 | 0.82284 | 0.82283 | 0.82390 | 0.82523 | 0.82521 |
| Within R2 | 0.07147 | 0.07162 | 0.07138 | 0.07838 | 0.07829 | 0.07154 | 0.07857 | 0.07850 |
TWFE panel with state-level trends
list(feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ log_gdp_priv_ind_pc + log_gdp_priv_ind_pc_l1 + log_gdp_priv_ind_pc_l2 + diff_total_active_n + l1_diff_total_active_n + l2_diff_total_active_n + time:as.factor(state) | fips + year, data = mines_df, se = "cluster", cluster = "fips"),
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_gdp_priv_ind_pc + log_gdp_priv_ind_pc_l1 + log_gdp_priv_ind_pc_l2 + diff_total_active_prod + l1_diff_total_active_prod + l2_diff_total_active_prod,
log_gdp_total_pc + log_gdp_total_pc_l1 + log_gdp_total_pc_l2 + diff_total_active_n + l1_diff_total_active_n + l2_diff_total_active_n,
log_gdp_total_pc + log_gdp_total_pc_l1 + log_gdp_total_pc_l2 + diff_total_active_prod + l1_diff_total_active_prod + l2_diff_total_active_prod) + time:as.factor(state) | fips + year, data = mines_df, se = "cluster", cluster = "fips")) %>% etable(se.below = TRUE, drop = "time*") %>% kable| .1 | .2 | .1 | .2 | .3 | .4 | .5 | .6 | |
|---|---|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) GDP Priv. Industry pc | 0.0125 | 0.0115 | 0.0124 | 0.0115 | ||||
| (0.0097) | (0.0097) | (0.0097) | (0.0097) | |||||
| (log,l1) GDP Priv. Industry pc | 0.0625*** | 0.0627*** | 0.0625*** | 0.0626*** | ||||
| (0.0090) | (0.0090) | (0.0090) | (0.0090) | |||||
| (log,l2) GDP Priv. Industry pc | 0.1355*** | 0.1358*** | 0.1356*** | 0.1359*** | ||||
| (0.0148) | (0.0148) | (0.0148) | (0.0148) | |||||
| (fd) Active Coal Mines | -0.0003 | -0.0003 | -0.0003 | -0.0003 | ||||
| (0.0010) | (0.0010) | (0.0010) | (0.0010) | |||||
| (l1, fd) Active Coal Mines | -0.0005 | -0.0005 | -0.0005 | -0.0005 | ||||
| (0.0009) | (0.0009) | (0.0009) | (0.0009) | |||||
| (l2, fd) Active Coal Mines | -0.0020* | -0.0019* | -0.0020* | -0.0020* | ||||
| (0.0008) | (0.0008) | (0.0008) | (0.0008) | |||||
| (fd) Active Coal Prod | -0.0004 | -0.0004 | -0.0004 | -0.0004 | ||||
| (0.0007) | (0.0007) | (0.0007) | (0.0007) | |||||
| (l1,fd) Active Coal Prod | -0.0006 | -0.0006 | -0.0006 | -0.0006 | ||||
| (0.0006) | (0.0006) | (0.0006) | (0.0006) | |||||
| (l2,fd) Active Coal Prod | -0.0019*** | -0.0020*** | -0.0019*** | -0.0020*** | ||||
| (0.0005) | (0.0005) | (0.0005) | (0.0005) | |||||
| (log) GDP pc | 0.0158 | 0.0158 | 0.0147 | 0.0147 | ||||
| (0.0112) | (0.0112) | (0.0112) | (0.0112) | |||||
| (log,l1) GDP pc | 0.0722*** | 0.0721*** | 0.0724*** | 0.0723*** | ||||
| (0.0107) | (0.0107) | (0.0107) | (0.0107) | |||||
| (log,l2) GDP pc | 0.1580*** | 0.1580*** | 0.1583*** | 0.1584*** | ||||
| (0.0169) | (0.0169) | (0.0169) | (0.0169) | |||||
| Fixed-Effects: | --------------------------- | -------------------------- | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ______________________________ | ___________________________ | __________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 |
| R2 | 0.83113 | 0.83339 | 0.83113 | 0.83210 | 0.83210 | 0.83339 | 0.83436 | 0.83437 |
| Within R2 | 0.12146 | 0.12160 | 0.12149 | 0.12652 | 0.12655 | 0.12162 | 0.12672 | 0.12675 |
list(feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ log_gdp_priv_ind_pc + log_gdp_priv_ind_pc_l1 + log_gdp_priv_ind_pc_l2 + l(total_active_n, 0:2) + time:as.factor(state) | fips + year, data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year),
feols(c(log_Total_Educ_Total_Exp_pp, log_Elem_Educ_Total_Exp_pp) ~ sw(log_gdp_priv_ind_pc + log_gdp_priv_ind_pc_l1 + log_gdp_priv_ind_pc_l2 + l(total_active_prod, 0:2),
log_gdp_total_pc + log_gdp_total_pc_l1 + log_gdp_total_pc_l2 + l(total_active_n, 0:2),
log_gdp_total_pc + log_gdp_total_pc_l1 + log_gdp_total_pc_l2 + l(total_active_prod, 0:2)) + time:as.factor(state) | fips + year, data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year)) %>% etable(se.below = TRUE, drop = "time*") %>% kable| .1 | .2 | .1 | .2 | .3 | .4 | .5 | .6 | |
|---|---|---|---|---|---|---|---|---|
| Dependent Var.: | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Total_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp | log_Elem_Educ_Total_Exp_pp |
| (log) GDP Priv. Industry pc | 0.0129 | 0.0119 | 0.0124 | 0.0115 | ||||
| (0.0097) | (0.0097) | (0.0097) | (0.0097) | |||||
| (log,l1) GDP Priv. Industry pc | 0.0626*** | 0.0627*** | 0.0625*** | 0.0626*** | ||||
| (0.0090) | (0.0090) | (0.0090) | (0.0090) | |||||
| (log,l2) GDP Priv. Industry pc | 0.1358*** | 0.1361*** | 0.1357*** | 0.1360*** | ||||
| (0.0148) | (0.0148) | (0.0148) | (0.0148) | |||||
| Active Coal Mines | -0.0008 | -0.0008 | -0.0008 | -0.0008 | ||||
| (0.0010) | (0.0010) | (0.0010) | (0.0010) | |||||
| (l1) Active Coal Mines | -0.0002 | -0.0002 | -0.0002 | -0.0002 | ||||
| (0.0009) | (0.0009) | (0.0009) | (0.0009) | |||||
| (l2) Active Coal Mines | -0.0009 | -0.0009 | -0.0009 | -0.0009 | ||||
| (0.0009) | (0.0009) | (0.0009) | (0.0009) | |||||
| Active Coal Prod | -2.76e-7 | -2.74e-7 | -2.7e-7 | -2.67e-7 | ||||
| (6.62e-7) | (6.67e-7) | (6.67e-7) | (6.69e-7) | |||||
| (l1) Active Coal Prod | -2.04e-7 | -2.28e-7 | -2.06e-7 | -2.3e-7 | ||||
| (3.2e-7) | (3.19e-7) | (3.24e-7) | (3.23e-7) | |||||
| (l2) Active Coal Prod | 8.2e-8 | -2.91e-9 | 8.62e-8 | 8.31e-10 | ||||
| (1.37e-6) | (1.38e-6) | (1.37e-6) | (1.38e-6) | |||||
| (log) GDP pc | 0.0162 | 0.0158 | 0.0151 | 0.0147 | ||||
| (0.0113) | (0.0112) | (0.0112) | (0.0112) | |||||
| (log,l1) GDP pc | 0.0722*** | 0.0721*** | 0.0724*** | 0.0723*** | ||||
| (0.0107) | (0.0107) | (0.0107) | (0.0107) | |||||
| (log,l2) GDP pc | 0.1583*** | 0.1582*** | 0.1587*** | 0.1586*** | ||||
| (0.0169) | (0.0169) | (0.0169) | (0.0169) | |||||
| Fixed-Effects: | --------------------------- | -------------------------- | --------------------------- | --------------------------- | --------------------------- | -------------------------- | -------------------------- | -------------------------- |
| fips | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| year | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| ______________________________ | ___________________________ | __________________________ | ___________________________ | ___________________________ | ___________________________ | __________________________ | __________________________ | __________________________ |
| S.E.: Clustered | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips | by: fips |
| Observations | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 | 52,060 |
| R2 | 0.83114 | 0.83340 | 0.83112 | 0.83211 | 0.83209 | 0.83338 | 0.83437 | 0.83436 |
| Within R2 | 0.12152 | 0.12166 | 0.12143 | 0.12659 | 0.12650 | 0.12156 | 0.12679 | 0.12670 |
Dealing with endogeneity
There is a significant endogeneity concern in using total active production and active mines as the treatment variable. Therefore, I have tried two instrumental variable approaches below and aim to add results using production- and employment-based Bartik instruments.
Instrumental Variable
We consider using total active production or total active mines as an instrument affecting education expenditure through property taxes or GDP. We know that property taxes have an endogenous relationship with education expenditure (it is a component of the public education budget), however, in theory mine closures/activity is unlikely to affect education expenditure, except via property taxes. We test this hypothesis below.
Conclusion: The results themselves are not promising (I think??).
Using coal production and mine activity as instruments for per capita property tax
To my eye, I don’t see any of these being useful - either they fail a first-stage F-test or the resulting coefficient on the treatment is statistically insignificant.
# Using total active production as an instrument for per capita property tax
feols(log_Total_Educ_Total_Exp_pp ~ 1 | fips + year | log_Property_Tax_pp ~ total_active_prod, data = mines_df, se = "cluster", cluster = "fips")TSLS estimation, Dep. Var.: log_Total_Educ_Total_Exp_pp, Endo.: log_Property_Tax_pp, Instr.: total_active_prod
Second stage: Dep. Var.: log_Total_Educ_Total_Exp_pp
Observations: 57,540
Fixed-effects: fips: 2,740, year: 21
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_Property_Tax_pp 0.477001 0.159982 2.98159 0.0028929 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.151731 Adj. R2: 0.780631
Within R2: -0.134301
F-test (1st stage), (log) Property Taxes pp: stat = 9.00233, p = 0.002698, on 1 and 57,518 DoF.
Wu-Hausman: stat = 2.42316, p = 0.11956 , on 1 and 54,778 DoF.
feols(log_Elem_Educ_Total_Exp_pp ~ 1 | fips + year | log_Property_Tax_pp ~ total_active_prod, data = mines_df, se = "cluster", cluster = "fips")TSLS estimation, Dep. Var.: log_Elem_Educ_Total_Exp_pp, Endo.: log_Property_Tax_pp, Instr.: total_active_prod
Second stage: Dep. Var.: log_Elem_Educ_Total_Exp_pp
Observations: 57,540
Fixed-effects: fips: 2,740, year: 21
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_Property_Tax_pp 0.503746 0.162703 3.09611 0.0019806 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.154857 Adj. R2: 0.771774
Within R2: -0.196346
F-test (1st stage), (log) Property Taxes pp: stat = 9.00233, p = 0.002698, on 1 and 57,518 DoF.
Wu-Hausman: stat = 2.99186, p = 0.08369 , on 1 and 54,778 DoF.
# Using the lag of total active production as an instrument for per capita property tax
feols(log_Total_Educ_Total_Exp_pp ~ 1 | fips + year | log_Property_Tax_pp ~ l(total_active_prod,1), data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year)TSLS estimation, Dep. Var.: log_Total_Educ_Total_Exp_pp, Endo.: log_Property_Tax_pp, Instr.: l(total_active_prod, 1)
Second stage: Dep. Var.: log_Total_Educ_Total_Exp_pp
Observations: 54,800
Fixed-effects: fips: 2,740, year: 20
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_Property_Tax_pp 0.575705 0.227114 2.53487 0.011304 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.163686 Adj. R2: 0.736369
Within R2: -0.322122
F-test (1st stage), (log) Property Taxes pp: stat = 10.1 , p = 0.001494, on 1 and 54,779 DoF.
Wu-Hausman: stat = 4.74017, p = 0.029471, on 1 and 52,039 DoF.
feols(log_Elem_Educ_Total_Exp_pp ~ 1 | fips + year | log_Property_Tax_pp ~ l(total_active_prod,1), data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year)TSLS estimation, Dep. Var.: log_Elem_Educ_Total_Exp_pp, Endo.: log_Property_Tax_pp, Instr.: l(total_active_prod, 1)
Second stage: Dep. Var.: log_Elem_Educ_Total_Exp_pp
Observations: 54,800
Fixed-effects: fips: 2,740, year: 20
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_Property_Tax_pp 0.594976 0.229189 2.59601 0.0094818 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.166452 Adj. R2: 0.72776
Within R2: -0.38442
F-test (1st stage), (log) Property Taxes pp: stat = 10.1 , p = 0.001494, on 1 and 54,779 DoF.
Wu-Hausman: stat = 5.37261, p = 0.020459, on 1 and 52,039 DoF.
# Using total active mines as an instrument for per capita property tax
feols(log_Total_Educ_Total_Exp_pp ~ 1 | fips + year | log_Property_Tax_pp ~ total_active_n, data = mines_df, se = "cluster", cluster = "fips")TSLS estimation, Dep. Var.: log_Total_Educ_Total_Exp_pp, Endo.: log_Property_Tax_pp, Instr.: total_active_n
Second stage: Dep. Var.: log_Total_Educ_Total_Exp_pp
Observations: 57,540
Fixed-effects: fips: 2,740, year: 21
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_Property_Tax_pp 1.1555 1.26299 0.914894 0.36033
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.276127 Adj. R2: 0.27349
Within R2: -2.7566
F-test (1st stage), (log) Property Taxes pp: stat = 0.924316, p = 0.336348, on 1 and 57,518 DoF.
Wu-Hausman: stat = 2.85915 , p = 0.090861, on 1 and 54,778 DoF.
feols(log_Elem_Educ_Total_Exp_pp ~ 1 | fips + year | log_Property_Tax_pp ~ total_active_n, data = mines_df, se = "cluster", cluster = "fips")TSLS estimation, Dep. Var.: log_Elem_Educ_Total_Exp_pp, Endo.: log_Property_Tax_pp, Instr.: total_active_n
Second stage: Dep. Var.: log_Elem_Educ_Total_Exp_pp
Observations: 57,540
Fixed-effects: fips: 2,740, year: 21
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_Property_Tax_pp 1.39817 1.48916 0.938902 0.34786
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.331181 Adj. R2: -0.043851
Within R2: -4.47179
F-test (1st stage), (log) Property Taxes pp: stat = 0.924316, p = 0.336348, on 1 and 57,518 DoF.
Wu-Hausman: stat = 4.55122 , p = 0.0329 , on 1 and 54,778 DoF.
# Using lag of total active mines as an instrument for per capita property tax
feols(log_Total_Educ_Total_Exp_pp ~ 1 | fips + year | log_Property_Tax_pp ~ l(total_active_n,1:2), data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year)TSLS estimation, Dep. Var.: log_Total_Educ_Total_Exp_pp, Endo.: log_Property_Tax_pp, Instr.: l(total_active_n, 1), l(total_active_n, 2)
Second stage: Dep. Var.: log_Total_Educ_Total_Exp_pp
Observations: 52,060
Fixed-effects: fips: 2,740, year: 19
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_Property_Tax_pp 0.60526 0.280157 2.16043 0.030826 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.166352 Adj. R2: 0.719373
Within R2: -0.382569
F-test (1st stage), (log) Property Taxes pp: stat = 3.26674 , p = 0.038138, on 2 and 52,039 DoF.
Wu-Hausman: stat = 3.46196 , p = 0.062802, on 1 and 49,300 DoF.
Sargan: stat = 0.248278, p = 0.618291, on 1 DoF.
feols(log_Elem_Educ_Total_Exp_pp ~ 1 | fips + year | log_Property_Tax_pp ~ l(total_active_n,1:2), data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year)TSLS estimation, Dep. Var.: log_Elem_Educ_Total_Exp_pp, Endo.: log_Property_Tax_pp, Instr.: l(total_active_n, 1), l(total_active_n, 2)
Second stage: Dep. Var.: log_Elem_Educ_Total_Exp_pp
Observations: 52,060
Fixed-effects: fips: 2,740, year: 19
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_Property_Tax_pp 0.63069 0.28485 2.21412 0.026903 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.170154 Adj. R2: 0.706846
Within R2: -0.463682
F-test (1st stage), (log) Property Taxes pp: stat = 3.26674 , p = 0.038138, on 2 and 52,039 DoF.
Wu-Hausman: stat = 4.00018 , p = 0.045501, on 1 and 49,300 DoF.
Sargan: stat = 0.280096, p = 0.596638, on 1 DoF.
Using coal production and mine activity as instruments for per capita gdp
All pass a first-stage F-test with high statistic and low p-value; however, less than satisfactory on the Wu-Hausman endogeneity test.
It seems that if we replace the “total education expenditure per pupil” with a measure of total expenditure on elementary education only, the effect is more pronounced.
Conclusion: This is the results I am most inclined to “report” in some way, even though it is weak. So I am curious for your thoughts on the validity (and blind spots I’ve missed when constructing the model).
# Using total active production as an instrument for per capita gdp
feols(log_Total_Educ_Total_Exp_pp ~ 1 | fips + year | log_gdp_total_pc ~ total_active_prod, data = mines_df, se = "cluster", cluster = "fips")TSLS estimation, Dep. Var.: log_Total_Educ_Total_Exp_pp, Endo.: log_gdp_total_pc, Instr.: total_active_prod
Second stage: Dep. Var.: log_Total_Educ_Total_Exp_pp
Observations: 57,540
Fixed-effects: fips: 2,740, year: 21
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_gdp_total_pc 0.138218 0.0337 4.10148 4.2248e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.139122 Adj. R2: 0.815577
Within R2: 0.046395
F-test (1st stage), (log) GDP pc: stat = 271.2 , p < 2.2e-16 , on 1 and 57,518 DoF.
Wu-Hausman: stat = 1.51459, p = 0.218446, on 1 and 54,778 DoF.
feols(log_Elem_Educ_Total_Exp_pp ~ 1 | fips + year | log_gdp_total_pc ~ total_active_prod, data = mines_df, se = "cluster", cluster = "fips")TSLS estimation, Dep. Var.: log_Elem_Educ_Total_Exp_pp, Endo.: log_gdp_total_pc, Instr.: total_active_prod
Second stage: Dep. Var.: log_Elem_Educ_Total_Exp_pp
Observations: 57,540
Fixed-effects: fips: 2,740, year: 21
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_gdp_total_pc 0.145968 0.033292 4.38448 1.2065e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.138154 Adj. R2: 0.818351
Within R2: 0.04781
F-test (1st stage), (log) GDP pc: stat = 271.2 , p < 2.2e-16 , on 1 and 57,518 DoF.
Wu-Hausman: stat = 1.15729, p = 0.282034, on 1 and 54,778 DoF.
# Using the lag of total active production as an instrument for per capita gdp
feols(log_Total_Educ_Total_Exp_pp ~ 1 | fips + year | log_gdp_total_pc ~ l(total_active_prod,1), data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year)TSLS estimation, Dep. Var.: log_Total_Educ_Total_Exp_pp, Endo.: log_gdp_total_pc, Instr.: l(total_active_prod, 1)
Second stage: Dep. Var.: log_Total_Educ_Total_Exp_pp
Observations: 54,800
Fixed-effects: fips: 2,740, year: 20
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_gdp_total_pc 0.181063 0.044614 4.05842 5.0787e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.138829 Adj. R2: 0.81036
Within R2: 0.048945
F-test (1st stage), (log) GDP pc: stat = 258.8 , p < 2.2e-16 , on 1 and 54,779 DoF.
Wu-Hausman: stat = 0.154911, p = 0.693887, on 1 and 52,039 DoF.
feols(log_Elem_Educ_Total_Exp_pp ~ 1 | fips + year | log_gdp_total_pc ~ l(total_active_prod,1), data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year)TSLS estimation, Dep. Var.: log_Elem_Educ_Total_Exp_pp, Endo.: log_gdp_total_pc, Instr.: l(total_active_prod, 1)
Second stage: Dep. Var.: log_Elem_Educ_Total_Exp_pp
Observations: 54,800
Fixed-effects: fips: 2,740, year: 20
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_gdp_total_pc 0.187124 0.044044 4.24856 2.2233e-05 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.137937 Adj. R2: 0.813046
Within R2: 0.049285
F-test (1st stage), (log) GDP pc: stat = 258.8 , p < 2.2e-16 , on 1 and 54,779 DoF.
Wu-Hausman: stat = 0.071202, p = 0.789595, on 1 and 52,039 DoF.
# Using total active mines as an instrument for per capita gdp
feols(log_Total_Educ_Total_Exp_pp ~ 1 | fips + year | log_gdp_total_pc ~ total_active_n, data = mines_df, se = "cluster", cluster = "fips")TSLS estimation, Dep. Var.: log_Total_Educ_Total_Exp_pp, Endo.: log_gdp_total_pc, Instr.: total_active_n
Second stage: Dep. Var.: log_Total_Educ_Total_Exp_pp
Observations: 57,540
Fixed-effects: fips: 2,740, year: 21
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_gdp_total_pc 0.092091 0.061324 1.50171 0.13329
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.139868 Adj. R2: 0.813594
Within R2: 0.036143
F-test (1st stage), (log) GDP pc: stat = 368.8 , p < 2.2e-16 , on 1 and 57,518 DoF.
Wu-Hausman: stat = 5.85855, p = 0.015505, on 1 and 54,778 DoF.
feols(log_Elem_Educ_Total_Exp_pp ~ 1 | fips + year | log_gdp_total_pc ~ total_active_n, data = mines_df, se = "cluster", cluster = "fips")TSLS estimation, Dep. Var.: log_Elem_Educ_Total_Exp_pp, Endo.: log_gdp_total_pc, Instr.: total_active_n
Second stage: Dep. Var.: log_Elem_Educ_Total_Exp_pp
Observations: 57,540
Fixed-effects: fips: 2,740, year: 21
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_gdp_total_pc 0.111432 0.057759 1.92925 0.053803 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.138626 Adj. R2: 0.817108
Within R2: 0.041296
F-test (1st stage), (log) GDP pc: stat = 368.8 , p < 2.2e-16 , on 1 and 57,518 DoF.
Wu-Hausman: stat = 3.98733, p = 0.045849, on 1 and 54,778 DoF.
# Using lag og total active mines as an instrument for per capita gdp
feols(log_Total_Educ_Total_Exp_pp ~ 1 | fips + year | log_gdp_total_pc ~ l(total_active_n,1), data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year)TSLS estimation, Dep. Var.: log_Total_Educ_Total_Exp_pp, Endo.: log_gdp_total_pc, Instr.: l(total_active_n, 1)
Second stage: Dep. Var.: log_Total_Educ_Total_Exp_pp
Observations: 54,800
Fixed-effects: fips: 2,740, year: 20
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_gdp_total_pc 0.117017 0.06007 1.94801 0.051516 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.139436 Adj. R2: 0.808697
Within R2: 0.040605
F-test (1st stage), (log) GDP pc: stat = 353.2 , p < 2.2e-16 , on 1 and 54,779 DoF.
Wu-Hausman: stat = 3.15592, p = 0.075658, on 1 and 52,039 DoF.
feols(log_Elem_Educ_Total_Exp_pp ~ 1 | fips + year | log_gdp_total_pc ~ l(total_active_n,1), data = mines_df, se = "cluster", cluster = "fips", panel.id = ~fips+year)TSLS estimation, Dep. Var.: log_Elem_Educ_Total_Exp_pp, Endo.: log_gdp_total_pc, Instr.: l(total_active_n, 1)
Second stage: Dep. Var.: log_Elem_Educ_Total_Exp_pp
Observations: 54,800
Fixed-effects: fips: 2,740, year: 20
Standard-errors: Clustered (fips)
Estimate Std. Error t value Pr(>|t|)
fit_log_gdp_total_pc 0.130035 0.058525 2.22186 0.026374 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RMSE: 0.138374 Adj. R2: 0.811859
Within R2: 0.043249
F-test (1st stage), (log) GDP pc: stat = 353.2 , p < 2.2e-16 , on 1 and 54,779 DoF.
Wu-Hausman: stat = 2.22833, p = 0.135506, on 1 and 52,039 DoF.
Bartik Instrument
TBA: Results to be added
ss <- readRDS(here("data/temp/shift_shares_base_01_05_11.RDS"))
ss %>%
filter(!(substr(fips, 1,2) %in% c("02", "15", "51", "09", "24"))) %>%
pull(fips) %>%
unique %>%
setdiff(unique(mines_df$fips)) [1] "08014" "11001" "25019" "25025" "28055" "31129" "36005" "36047" "36061"
[10] "36081" "36085" "37001" "37003" "37005" "37007" "37009" "37011" "37013"
[19] "37015" "37017" "37019" "37021" "37023" "37025" "37027" "37029" "37031"
[28] "37033" "37035" "37037" "37039" "37041" "37043" "37045" "37047" "37049"
[37] "37051" "37053" "37055" "37057" "37059" "37061" "37063" "37065" "37067"
[46] "37069" "37071" "37073" "37075" "37077" "37079" "37081" "37083" "37085"
[55] "37087" "37089" "37091" "37093" "37095" "37097" "37099" "37101" "37103"
[64] "37105" "37107" "37109" "37111" "37113" "37115" "37117" "37119" "37121"
[73] "37123" "37125" "37127" "37129" "37131" "37133" "37135" "37137" "37139"
[82] "37141" "37143" "37145" "37147" "37149" "37151" "37153" "37155" "37157"
[91] "37159" "37161" "37163" "37165" "37167" "37169" "37171" "37173" "37175"
[100] "37177" "37179" "37181" "37183" "37185" "37187" "37189" "37191" "37193"
[109] "37195" "37197" "37199" "44003" "44005" "46017" "47001" "47003" "47005"
[118] "47007" "47009" "47011" "47013" "47015" "47019" "47021" "47023" "47025"
[127] "47027" "47029" "47031" "47033" "47035" "47037" "47039" "47041" "47043"
[136] "47045" "47047" "47049" "47051" "47055" "47057" "47059" "47061" "47063"
[145] "47065" "47067" "47069" "47071" "47073" "47075" "47077" "47081" "47083"
[154] "47085" "47087" "47089" "47091" "47093" "47095" "47097" "47099" "47101"
[163] "47103" "47105" "47107" "47109" "47111" "47113" "47117" "47119" "47121"
[172] "47123" "47125" "47127" "47129" "47131" "47133" "47135" "47137" "47139"
[181] "47141" "47143" "47145" "47147" "47149" "47153" "47155" "47157" "47159"
[190] "47161" "47163" "47165" "47167" "47169" "47171" "47173" "47175" "47177"
[199] "47179" "47181" "47183" "47185" "48301"